package com.windystory.wslibrary.util;

import android.content.Context;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;

import java.util.Arrays;

/**
 * <b>Toast 工具类,包含一般情况，太灵活的Toast这里没有编写</b></br>
 * Toast工具类主要含有<br>
 * <li>普通Toast</li>
 * <li>Toast显示数组内容</li>
 * <li>带图片Toast</li>
 * <li>带图片Toast,自定义位置</li>
 * <li>自定义位置Toast</li>
 *
 * @author WindyStory
 * @version 1.0
 * @time 2015年05月31日
 */
public class ToastUtil {

    /**
     * 普通Toast 用法与普通Toast一样，这里稍作简化
     *
     * @param context  上下文
     * @param text     显示String类型内容
     * @param duration 时间用法与Toast一样 Toast.LENGTH_LONG Toast.LENGTH_SHORT
     */
    public static void generalToast(Context context, CharSequence text, int duration) {
        Toast toast = Toast.makeText(context, text, duration);
        toast.show();
    }

    /**
     * 普通Toast
     *
     * @param context 上下文
     * @param text    显示String类型内容
     */
    public static void generalToast(Context context, String text) {
        Toast toast = Toast.makeText(context, text, Toast.LENGTH_SHORT);
        toast.show();
    }


    /**
     * 普通Toast 用法与普通Toast一样，这里稍作简化
     *
     * @param context  上下文
     * @param text     显示int类型内容
     * @param duration 时间用法与Toast一样 Toast.LENGTH_LONG Toast.LENGTH_SHORT
     */
    public static void generalToast(Context context, int text, int duration) {
        Toast toast = Toast.makeText(context, text, duration);
        toast.show();
    }

    /**
     * *普通Toast 用法与普通Toast一样，这里稍作简化
     *
     * @param context  上下文
     * @param text     显示数组类型内容--->用于遍历显示测试用
     * @param duration 时间用法与Toast一样 Toast.LENGTH_LONG Toast.LENGTH_SHORT
     */
    public static void generalToastArray(Context context, int[] text, int duration) {
        String array = Arrays.toString(text);
        Toast toast = Toast.makeText(context, array, duration);
        toast.show();
    }

    /**
     * *普通Toast 用法与普通Toast一样，这里稍作简化
     *
     * @param context  上下文
     * @param text     显示数组类型内容--->用于遍历显示测试用
     * @param duration 时间用法与Toast一样 Toast.LENGTH_LONG Toast.LENGTH_SHORT
     */
    public static void generalToastArray(Context context, CharSequence[] text, int duration) {
        String array = Arrays.toString(text);
        Toast toast = Toast.makeText(context, array, duration);
        toast.show();
    }

    /**
     * 定义位置Toast
     *
     * @param context  上下文
     * @param text     显示数组类型内容--->用于遍历显示测试用
     * @param duration 时间用法与Toast一样 Toast.LENGTH_LONG Toast.LENGTH_SHORT
     * @param gravity  指定的位置，用 Gravity来制定
     * @param xOffset  距屏幕X坐标
     * @param yOffset  距屏幕Y坐标
     */
    public static void toastPosition(Context context, int text, int duration, int gravity, int xOffset, int yOffset) {
        Toast toast = Toast.makeText(context, text, duration);
        toast.setGravity(gravity, xOffset, yOffset);
        toast.show();
    }

    /**
     * 定义位置Toast
     *
     * @param context  上下文
     * @param text     显示数组类型内容--->用于遍历显示测试用
     * @param duration 时间用法与Toast一样 Toast.LENGTH_LONG Toast.LENGTH_SHORT
     * @param gravity  指定的位置，用 Gravity来制定
     * @param xOffset  距屏幕X坐标
     * @param yOffset  距屏幕Y坐标
     */
    public static void toastPosition(Context context, CharSequence text, int duration, int gravity, int xOffset,
                                     int yOffset) {
        Toast toast = Toast.makeText(context, text, duration);
        toast.setGravity(gravity, xOffset, yOffset);
        toast.show();
    }

    /**
     * 横纵百分比显示Toast
     *
     * @param context          上下文
     * @param text             内容
     * @param duration         时长 ，用法与Toast一样 Toast.LENGTH_LONG Toast.LENGTH_SHORT
     * @param horizontalMargin 横向比例
     * @param verticalMargin   纵向比例
     */
    public static void toastPercent(Context context, CharSequence text, int duration, float horizontalMargin,
                                    float verticalMargin) {
        Toast toast = Toast.makeText(context, text, duration);
        toast.setMargin(horizontalMargin, verticalMargin);
        toast.show();
    }

    /**
     * 横纵百分比显示Toast
     *
     * @param context          上下文
     * @param text             内容
     * @param duration         时长 ，用法与Toast一样 Toast.LENGTH_LONG Toast.LENGTH_SHORT
     * @param horizontalMargin 横向比例
     * @param verticalMargin   纵向比例
     */
    public static void toastPercent(Context context, int text, int duration, float horizontalMargin,
                                    float verticalMargin) {
        Toast toast = Toast.makeText(context, text, duration);
        toast.setMargin(horizontalMargin, verticalMargin);
        toast.show();
    }

    /**
     * 带图片的Toast
     *
     * @param context  上下文
     * @param text     内容
     * @param duration 时长 ，用法与Toast一样 Toast.LENGTH_LONG Toast.LENGTH_SHORT
     * @param resId    图片资源
     */
    public static void toastWithPic(Context context, int text, int duration, int resId) {
        Toast toast = Toast.makeText(context, text, duration);
        // 通过Toast创建一个LinearLayout
        LinearLayout layout = (LinearLayout) toast.getView();
        // 创建一个ImageView对象，并添加到LinearLayout中
        ImageView imageView = new ImageView(context);
        imageView.setImageResource(resId);
        // 添加
        layout.addView(imageView);
        // 显示Toast
        toast.show();
    }

    /**
     * 带图片的Toast
     *
     * @param context  上下文
     * @param text     内容
     * @param duration 时长 ，用法与Toast一样 Toast.LENGTH_LONG Toast.LENGTH_SHORT
     * @param resId    图片资源
     */
    public static void toastWithPic(Context context, CharSequence text, int duration, int resId) {
        Toast toast = Toast.makeText(context, text, duration);
        // 通过Toast创建一个LinearLayout
        LinearLayout layout = (LinearLayout) toast.getView();
        // 创建一个ImageView对象，并添加到LinearLayout中
        ImageView imageView = new ImageView(context);
        imageView.setImageResource(resId);
        // 添加
        layout.addView(imageView);
        // 显示Toast
        toast.show();
    }

    /**
     * 带图片的Toast,自定义位置
     *
     * @param context  上下文
     * @param text     内容
     * @param duration 时长 ，用法与Toast一样 Toast.LENGTH_LONG Toast.LENGTH_SHORT
     * @param resId    图片资源
     * @param gravity  指定的位置，用 Gravity来制定
     * @param xOffset  距屏幕X坐标
     * @param yOffset  距屏幕Y坐标
     */
    public static void toastWithPic(Context context, CharSequence text, int duration, int resId, int gravity,
                                    int xOffset, int yOffset) {
        Toast toast = Toast.makeText(context, text, duration);
        // 通过Toast创建一个LinearLayout
        LinearLayout layout = (LinearLayout) toast.getView();
        // 创建一个ImageView对象，并添加到LinearLayout中
        ImageView imageView = new ImageView(context);
        imageView.setImageResource(resId);
        // 添加
        layout.addView(imageView);
        // 显示Toast
        toast.setGravity(gravity, xOffset, yOffset);
        toast.show();
    }

    /**
     * 带图片的Toast,自定义位置
     *
     * @param context  上下文
     * @param text     内容
     * @param duration 时长 ，用法与Toast一样 Toast.LENGTH_LONG Toast.LENGTH_SHORT
     * @param resId    图片资源
     * @param gravity  指定的位置，用 Gravity来制定
     * @param xOffset  距屏幕X坐标
     * @param yOffset  距屏幕Y坐标
     */
    public static void toastWithPic(Context context, int text, int duration, int resId, int gravity, int xOffset,
                                    int yOffset) {
        Toast toast = Toast.makeText(context, text, duration);
        // 通过Toast创建一个LinearLayout
        LinearLayout layout = (LinearLayout) toast.getView();
        // 创建一个ImageView对象，并添加到LinearLayout中
        ImageView imageView = new ImageView(context);
        imageView.setImageResource(resId);
        // 添加
        layout.addView(imageView);
        // 显示Toast
        toast.setGravity(gravity, xOffset, yOffset);
        toast.show();
    }
}
